package com.shortLinked.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.shortLinked.project.dao.entity.ShortLinkDO;
import com.shortLinked.project.dto.req.RecoverRecycleBinReqDTO;
import com.shortLinked.project.dto.req.RecycleBinReqDTO;
import com.shortLinked.project.dto.req.RemoveRecycleBinReqDTO;
import com.shortLinked.project.dto.req.ShortLinkRecycleBinPageReqDTO;
import com.shortLinked.project.dto.resp.ShortLinkPageRespDTO;

/**
 * 短链接回收站接口层
 */
public interface RecycleBinService extends IService<ShortLinkDO> {

    /**
     * 短链接保存回收站
     *
     * @param requestParam 短链接回收请求参数
     */
    void saveRecycleBin(RecycleBinReqDTO requestParam);

    /**
     * 回收站短链接分组查询
     *
     * @param requestParam 分页查询请求参数
     * @return 短链接分页返回对象
     */
    IPage<ShortLinkPageRespDTO> pageRecycleBinShortlink(ShortLinkRecycleBinPageReqDTO requestParam);

    /**
     * 回收站短链接恢复
     *
     * @param requestParam 短链接回收站恢复请求实体
     */
    void recoverRecycleBin(RecoverRecycleBinReqDTO requestParam);

    /**
     * 移除回收站中的短链接
     *
     * @param requestParam 移除回收站请求参数
     */
    void removeRecycleBin(RemoveRecycleBinReqDTO requestParam);
}
